home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / PARSING.SWG / 0005_Parse out tokens.pas < prev    next >
Pascal/Delphi Source File  |  1993-09-26  |  2KB  |  46 lines

  1. {*****************************************************************************
  2.  * Function ...... ParseCount()
  3.  * Purpose ....... To count the number of tokens in a string
  4.  * Parameters .... cString      String to count tokens in
  5.  *                 cChar        Token separator
  6.  * Returns ....... Number of tokens in <cString>
  7.  * Notes ......... Uses function StripChar
  8.  * Author ........ Martin Richardson
  9.  * Date .......... September 30, 1992
  10.  *****************************************************************************}
  11. FUNCTION ParseCount( cString: STRING; cChar: CHAR ): INTEGER;
  12. BEGIN
  13.      ParseCount := LENGTH(cString) - LENGTH(StripChar(cString, cChar)) + 1;
  14. END;
  15.  
  16. {*****************************************************************************
  17.  * Function ...... Parse()
  18.  * Purpose ....... To parse out tokens from a string
  19.  * Parameters .... cString      String to parse
  20.  *                 nIndex       Token number to return
  21.  *                 cChar        Token separator
  22.  * Returns ....... Token <nIndex> extracted from <cString>
  23.  * Notes ......... If <nIndex> is greater than the number of tokens in
  24.  *                 <cString> then a null string is returned.
  25.  *               . Uses function Left, Right, and ParseCount
  26.  * Author ........ Martin Richardson
  27.  * Date .......... September 30, 1992
  28.  *****************************************************************************}
  29. FUNCTION Parse( cString: STRING; nIndex: INTEGER; cChar: CHAR ): STRING;
  30. VAR 
  31.    i: INTEGER;
  32.    cResult: STRING;
  33. BEGIN
  34.      IF nIndex > ParseCount( cString, cChar ) THEN
  35.         cResult := ''
  36.      ELSE BEGIN
  37.           cString := cString + cChar;
  38.           FOR i := 1 TO nIndex DO BEGIN
  39.               cResult := Left( cString, POS( cChar, cString ) - 1 );
  40.               cString := Right(cString, LENGTH(cString) - POS(cChar, cString));
  41.           END { Next I };
  42.      END { IF };
  43.      Parse := cResult;
  44. END;
  45.  
  46.